home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / bin / partman < prev    next >
Text File  |  2009-06-16  |  4KB  |  194 lines

  1. #!/bin/sh
  2.  
  3. . /lib/partman/lib/base.sh
  4. . /lib/partman/lib/commit.sh
  5.  
  6. abort () {
  7.     if [ -f /var/run/parted_server.pid ]; then
  8.         stop_parted_server
  9.     fi
  10.     exit $1
  11. }
  12.  
  13. # Implemented here instead of init.d because anna displays a progress bar
  14. # which conflicts with the init.d progress bar
  15. load_extra () {
  16.     local auto memreq_lvm memreq_crypto
  17.  
  18.     if [ -f /var/lib/partman/loaded-extra ]; then
  19.         return 0
  20.     fi
  21.     >/var/lib/partman/loaded-extra
  22.  
  23.     # Rough memory requirements in kB; could be made arch dependent
  24.     memreq_lvm=7500
  25.     memreq_crypto=11000    # 1MB more than limit in partman-crypto
  26.  
  27.     auto=""
  28.     if [ -f /lib/partman/lib/auto-shared.sh ]; then
  29.         auto=1
  30.     fi
  31.  
  32.     # partman-lvm is loaded first, then partman-crypto
  33.     if [ -f /lib/partman/lib/lvm-base.sh ]; then
  34.         :
  35.     elif [ $(memfree) -ge $memreq_lvm ]; then
  36.         if [ "$auto" ]; then
  37.             anna-install partman-auto-lvm
  38.         else
  39.             anna-install partman-lvm
  40.         fi
  41.     else
  42.         logger -t partman "Insufficient free memory to load LVM support"
  43.     fi
  44.     if [ -f /lib/partman/lib/crypto-base.sh ]; then
  45.         :
  46.     elif [ $(memfree) -ge $memreq_crypto ]; then
  47.         if [ "$auto" ]; then
  48.             anna-install partman-auto-crypto
  49.         else
  50.             anna-install partman-crypto
  51.         fi
  52.     else
  53.         logger -t partman "Insufficient free memory to load crypto support"
  54.     fi
  55. }
  56.  
  57. ###########################################################
  58. # Compute some constants in order to make things faster.
  59. ###########################################################
  60.  
  61. # Detect if Debconf can escape strings
  62. # non-empty means we can escape
  63. can_escape=''
  64. if type debconf-escape >/dev/null 2>&1; then
  65.     db_capb backup align
  66.     for cap in $RET; do
  67.         case $cap in
  68.             escape)    can_escape=yes ;;
  69.         esac
  70.     done
  71. fi
  72. export can_escape
  73.  
  74. # The decimal separator (dot or comma)
  75. #db_metaget partman/text/deci description
  76. #deci="$RET"
  77. # The comma has special meaning for debconf.  Lets force dot until we
  78. # start using escaped strings.
  79. deci='.'
  80. export deci
  81.  
  82. # work around bug #243373
  83. if [ "$TERM" = xterm ] || [ "$TERM" = bterm ]; then
  84.     debconf_select_lead="$NBSP"
  85. else
  86.     debconf_select_lead="> "
  87. fi
  88. export debconf_select_lead
  89.  
  90. ###########################################################
  91.  
  92.  
  93. # Commented due to #240145
  94. #if [ -e /var/lib/partman ]; then
  95. #    rm -rf /var/lib/partman
  96. #fi
  97.  
  98. mkdir -p /var/lib/partman
  99.  
  100. # Load additional components when sufficient memory is available
  101. load_extra
  102.  
  103. # Make sure all modules are available
  104. # Should really be done whenever anna installs a kernel package
  105. depmod -a
  106.  
  107. # We need to set the capabilities after anna-install
  108. db_capb backup align
  109.  
  110. while true; do
  111.     initcount=$(ls /lib/partman/init.d/* | wc -l)
  112.     db_progress START 0 $initcount partman/progress/init/title
  113.  
  114.     for s in /lib/partman/init.d/*; do
  115.         if [ -x $s ]; then
  116.             #logger -t partman "Running init.d/$s"
  117.  
  118.             base=$(basename $s | sed 's/[0-9]*//')
  119.             # Not every init script has, or needs, its own progress
  120.             # template. Add them to slow init scripts only.
  121.             if ! db_progress INFO partman/progress/init/$base; then
  122.                 db_progress INFO partman/progress/init/fallback
  123.             fi
  124.             if ! $s; then
  125.                 db_progress STOP
  126.                 abort 10
  127.             fi
  128.         fi
  129.         db_progress STEP 1
  130.     done
  131.     db_progress STOP
  132.  
  133.     while true; do
  134.         for s in /lib/partman/display.d/*; do
  135.             if [ -x $s ]; then
  136.                 #logger -t partman "Running display.d/$s"
  137.                 $s || {
  138.                     exitcode=$?
  139.                     if [ $exitcode -eq 255 ]; then
  140.                         abort 10 # back up to main menu
  141.                     elif [ $exitcode -ge 128 ] && [ $exitcode -lt 192 ]; then
  142.                         abort $exitcode # killed by signal
  143.                     elif [ $exitcode -ge 100 ]; then
  144.                         break # successful partitioning
  145.                     else
  146.                         continue 2
  147.                     fi
  148.                 }
  149.             fi
  150.         done
  151.  
  152.         for s in /lib/partman/check.d/*; do
  153.             if [ -x $s ]; then
  154.                 #logger -t partman "Running check.d/$s"
  155.                 if ! $s; then
  156.                     continue 2
  157.                 fi
  158.             fi
  159.         done
  160.         if confirm_changes partman; then
  161.             break
  162.         fi
  163.     done
  164.  
  165.     if [ "$PARTMAN_NO_COMMIT" ]; then
  166.         exit 0
  167.     fi
  168.  
  169.     for s in /lib/partman/commit.d/*; do
  170.         if [ -x $s ]; then
  171.             #logger -t partman "Running commit.d/$s"
  172.             $s || continue 2
  173.         fi
  174.     done
  175.  
  176.     for s in /lib/partman/finish.d/*; do
  177.         if [ -x $s ]; then
  178.             #logger -t partman "Running finish.d/$s"
  179.             $s || {
  180.                 exitcode=$?
  181.                 if [ "$exitcode" = 1 ]; then
  182.                     continue 2
  183.                 else
  184.                     abort $exitcode
  185.                 fi
  186.             }
  187.         fi
  188.     done
  189.  
  190.     break
  191. done
  192.  
  193. exit 0
  194.